[Report] ARC328 – Creating a Support Chatbot #reinvent
I participated in the ARC328 - Creating a Support Chatbot of the builders session.
The builders session is a group session with AWS Solution Architect and five participants.
Overview
To quote the event catalog.
In this session, create a conversational interface with Amazon Lex which recognizes and answers common questions received through chat or voice. Become familiar with an Amazon Lex chatbot and its constructs, such as intents, utterances, and slots.
Architecture
AWS services used this time:
- Amazon Lex
- AWS Lambda
- Amazon S3
- Cognito
Deployment
We will present AWS's solution architect, and will build it according to the following documents:
Module 1: Static Web Hosting with Amazon S3
In this module, we host a static website on Amazon S3. We build this using CloudFormation.
- Type Website Bucket Name and click
Next
.
- Select 'default' on the Options page and click
Next
. -
On the Review page, check the box next to I acknowledge that AWS CloudFormation might create IAM resources., and click
Create.
- After stack status becomes
CREATE_COMPLETE
, we will clickWebsiteURL link
fromOutputs
.
- This completes Module 1.
Module 2: User Registration with Amazon Cognito User Pools
In this module, we create an Amazon Cognito User Pool user to log in.
- Go to
/register.html
and create an account.
- This redirects to
/verify.html
. Type in theverification code
that you receive in your email.
- Login after redirecting to
signin.html
.
- This completes Module 2.
Module 3: Create Chat bot
In this module, we create a chatbot with Amazon Lex.
Step 1: Create the AWS Lambda function
We will create Lambda function using CloudFormation template. Proceed with all settings on default.
Step 2: Configure Cognito pool id in Lambda function
Here, we modify the Lambda function.
- Copy
Cognito User Pool Id
fromResource
of CloudFormation stacksupportchatbot-webapp-1
- Open the Lambda function(support-chatbot-function) that is created, modify
PoolID
and thenSave
.
import json import boto3 client = boto3.client('cognito-idp') with open('./response.json', 'r') as r: response = json.load(r) response_success = response['response_success'] response_fail = response['response_fail'] #use your cognito user pool ID PoolID = 'xxxxxxx'
Step 3: Creating your Bot
- Download json file prepared in advance. VirtualHelpDesk.zip
-
Go to Amazon Lex console.
Import
the zip file we downloaded earlier.
- Click
Build
to create a bot.
- When Build is completed, try typing
I forgot my password
on the screen on the right.
Step 4: Integrating the bot with Lambda and test it
- Go to the
Fulfillment
session, select theLambda function
we just created and setversion
to$LATEST
. Keep the same settings for both intent,UnlockAccount
andPWReset
.
- Click
Save Intent
to save. -
Click
Build
to build the chatbot.
Step 5: Test Password Reset and Account Unlock Intent
- In the
VirtualHelpDesk
chatbot, openTest bot
and typeI forgot my password
. -
We will follow the chatbot's support instructions. At the end, you will see the following response, and the reset code is sent to the email address.
Great, you're all set. Check your email for further instructions.
- When we receive the email, go to
/forgotPassword.html
and reset the password.
- After resetting the password, move to
/signin.html
and login with the new password.
- Test with the
UnlockAccount
intent. -
From Cognito's management console, change Cognito User Pool(SupportChatbot) →
Users and Groups
→ user toDisable
.
- Open
Test bot
withUnlockAccount
intent and typeI think my account is locked
. -
Follow the chatbot's support instructions. At the end, you will see the following response, which unlocks the user.
Great, you're all set. Try logging in now
At this point we can confirm that Account Status
is Enabled
.
- Go to
/signin.html
and check if login is possible.
Step 6: Host the bot with-in a Web Application
Launch the CloudFormation stack.
- In the Lex Bot Configuration Parameters, type BotName :
VirtualHelpDesk
- In the Web Application Parameters, type each of the parameters.
WebAppConfBotInitialText : Hello, How can I help you?
WebAppConfBotInitialSpeech : I forgot my password
WebAppConfToolbarTitle : VirtualHelpDesk
- When Stack status becomes
CREATE_COMPLETE
, checkOutputs
and openParentPageURl
, the chatbot will be displayed asiFrame
.
Conclusion
I plan to use chatbots more often from now on. please see the details of github's aws-samples/support-chat-bot. I am eagerly waiting for Amazon Lex's Japanese language response, which I will study in detail.